home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xa / undo / DeclTableClrActionUndoable.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  3.3 KB  |  99 lines

  1. package com.extensibility.xa.undo;
  2.  
  3. import com.extensibility.app.BaseUndoable;
  4. import com.extensibility.app.DialogFactory;
  5. import com.extensibility.app.UI;
  6. import com.extensibility.xa.AggregateAttributeDecl;
  7. import com.extensibility.xa.DeclTable;
  8. import com.extensibility.xa.SchemaWin;
  9. import com.extensibility.xml.BaseDeclaration;
  10. import com.extensibility.xml.InternalPEDeclaration;
  11. import java.util.Enumeration;
  12. import javax.swing.ListSelectionModel;
  13.  
  14. public class DeclTableClrActionUndoable extends ClearDeclsUndoable {
  15.    DeclTable tableToUndo;
  16.    int row;
  17.    int orgCol;
  18.  
  19.    public DeclTableClrActionUndoable(DeclTable var1, SchemaWin var2) {
  20.       super(var2);
  21.       this.tableToUndo = var1;
  22.    }
  23.  
  24.    public boolean doClear() {
  25.       boolean var1 = false;
  26.       this.orgCol = this.tableToUndo.getSelectedColumn();
  27.       if (!this.tableToUndo.stopEditing()) {
  28.          return var1;
  29.       } else {
  30.          ListSelectionModel var2 = this.tableToUndo.getSelectionModel();
  31.          this.row = this.tableToUndo.getSelectedRow();
  32.  
  33.          for(int var3 = var2.getMinSelectionIndex(); var3 <= var2.getMaxSelectionIndex(); ++var3) {
  34.             if (var2.isSelectedIndex(var3)) {
  35.                BaseDeclaration var4 = this.tableToUndo.getDeclTableModel().getDeclaration(var3);
  36.                if (var4 != null) {
  37.                   if (!((ClearDeclsUndoable)this).getSchemaDoc().isEditable(var4)) {
  38.                      DialogFactory.showException(((BaseUndoable)this).getWindow(), 106, UI.getString("error.decl.not.editable"), var4.getName());
  39.                   } else {
  40.                      if (var4 instanceof InternalPEDeclaration) {
  41.                         Enumeration var5 = ((ClearDeclsUndoable)this).getSchemaDoc().getUsedBy((InternalPEDeclaration)var4);
  42.                         if (var5.hasMoreElements()) {
  43.                            String var6 = UI.getString("stop.delete.in.use", var4.getName(), ((BaseDeclaration)var5.nextElement()).getName());
  44.                            DialogFactory.stop(((BaseUndoable)this).getWindow(), var6);
  45.                            continue;
  46.                         }
  47.                      }
  48.  
  49.                      if (!var1) {
  50.                         var1 = true;
  51.                      }
  52.  
  53.                      super.toRemove.addToSet(var4);
  54.                   }
  55.                }
  56.             }
  57.          }
  58.  
  59.          if (var1) {
  60.             ((ClearDeclsUndoable)this).doCommand();
  61.          }
  62.  
  63.          if (this.row < this.tableToUndo.getRowCount()) {
  64.             this.tableToUndo.select(this.row, this.orgCol);
  65.          } else if (this.row > 0) {
  66.             this.tableToUndo.select(this.row - super.toRemove.size(), this.orgCol);
  67.          }
  68.  
  69.          return var1;
  70.       }
  71.    }
  72.  
  73.    public void undo() {
  74.       super.undo();
  75.       if (super.toRemove.size() > 0) {
  76.          Object var1 = (BaseDeclaration)super.toRemove.elementAt(0);
  77.          if (var1 != null && var1 instanceof AggregateAttributeDecl) {
  78.             var1 = ((AggregateAttributeDecl)var1).getFirst();
  79.          }
  80.  
  81.          if (var1 != null) {
  82.             this.tableToUndo.select((BaseDeclaration)var1);
  83.          }
  84.       }
  85.  
  86.    }
  87.  
  88.    public void redo() {
  89.       super.redo();
  90.       ((ClearDeclsUndoable)this).doCommand();
  91.       if (this.row < this.tableToUndo.getRowCount()) {
  92.          this.tableToUndo.select(this.row, this.orgCol);
  93.       } else if (this.row > 0) {
  94.          this.tableToUndo.select(this.row - super.toRemove.size(), this.orgCol);
  95.       }
  96.  
  97.    }
  98. }
  99.